package com.holyn.guofang.model.webhttp.observable;

import com.holyn.guofang.model.webhttp.wo.AreaWo;
import com.holyn.guofang.model.webhttp.wo.ImageBasicWo;
import com.holyn.guofang.model.webhttp.wo.ProductGroupWo;
import com.holyn.guofang.model.webhttp.wo.ProductServiceWo;
import com.holyn.guofang.model.webhttp.wo.ProductTypeWo;

import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
import retrofit2.http.Query;

/**
 * Created by Holyn on 2017/6/22.
 */

public interface DataDictionaryObservable {
    /**
     * 获取下级地区信息
     *
     * @param code 上级地区代码(获取省级地区传空字符串)
     * @param parentID 上级地区 ID(获取省级地区传 0)
     * @return
     *
     * 操作是否成功(1:是，0:否)
     */
    @FormUrlEncoded
    @POST("listArea.ashx")
    Observable<AreaWo> listArea(
            @Field("code") String code,
            @Field("parentID") Integer parentID
    );

    /**
     * 获取商品类别列表
     *
     * @param pageSize 每页返回记录数，传的数为非正数时返回所有记录
     * @param page 页码，传的数为非正数时返回所有记录
     * @return
     *
     * 操作是否成功(1:是，0:否)
     */
    @FormUrlEncoded
    @POST("listProductType.ashx")
    Observable<ProductTypeWo> listProductType(
            @Field("pageSize") Integer pageSize,
            @Field("page") Integer page
    );

    /**
     * 获取类似群组信息。
     *
     * @param typeCode 类别编号
     * @param groupCode 类似群编号
     * @param pageSize 每页返回记录数，传的数为非正数时返回所有记录
     * @param page 页码，传的数为非正数时返回所有记录
     *
     * @return
     *
     * 操作是否成功(1:是，0:否，-1:用户不存在，-2: 登录信息不存在，-3:用户 ID 与登录信息不匹配， -4:登录已过期，-5:验证码不匹配)
     */
    @FormUrlEncoded
    @POST("productGroupList.ashx")
    Observable<ProductGroupWo> productGroupList(
            @Field("typeCode") String typeCode,
            @Field("groupCode") String groupCode,
            @Field("pageSize") Integer pageSize,
            @Field("page") Integer page
    );

    /**
     * 根据代码获取类似群组信息。
     *
     * @param code 代码，不同代码用半角分号(“;”)分开
     * @return
     *
     * 操作是否成功(1:是，0:否)
     */
    @FormUrlEncoded
    @POST("listProductGroup.ashx")
    Observable<ProductGroupWo> listProductGroup(
            @Field("code") String code
    );


    /**
     * 根据商品名称查询类别编号和群组编号。
     *
     * @param typeCode 类别编号
     * @param groupCode 群组编号
     * @param productName 商品名称
     * @return
     *
     * 操作是否成功(1:是，0:否，-1:用户不存在，-2: 登录信息不存在，-3:用户 ID 与登录信息不匹配， -4:登录已过期，-5:验证码不匹配)
     */
    @FormUrlEncoded
    @POST("productServiceList.ashx")
    Observable<ProductServiceWo> productServiceList(
            @Field("typeCode") String typeCode,
            @Field("groupCode") String groupCode,
            @Field("productName") String productName,
            @Field("pageSize") Integer pageSize,
            @Field("page") Integer page
    );

    /**
     * 根据代码查询类别编号和群组编号。
     *
     * @param code 代码，不同代码用半角分号(“;”)分开
     * @param id 商品服务国方 ID，不同 ID 用半角分号(“;”)分开
     * @return
     *
     * 操作是否成功(1:是，0:否)
     */
    @FormUrlEncoded
    @POST("listProductService.ashx")
    Observable<ProductServiceWo> listProductService(
            @Field("code") String code,
            @Field("id") String id
    );

    /**
     * 根据上级编号获取图形要素。
     *
     * @param parentCode 上级编号(不传值或传空字符串时获取一级图形要素)
     * @return
     *
     * 操作是否成功(1:是，0:否，-1:用户不存在，-2: 登录信息不存在，-3:用户 ID 与登录信息不匹配， -4:登录已过期，-5:验证码不匹配)
     */
    @FormUrlEncoded
    @POST("imageBasicList.ashx")
    Observable<ImageBasicWo> imageBasicList(
            @Field("parentCode") String parentCode,
            @Field("pageSize") Integer pageSize,
            @Field("page") Integer page
    );

}
